/**
 * 
 */
package com.huxi.lang.local;

import java.time.ZoneOffset;
import java.util.Locale;
import java.util.TimeZone;

/**
 * 本地化应用环境接口
 * 
 * @since 1.0
 * @author jian.wu
 */
public interface LocalContext {

	/**
	 * 所属区域
	 * 
	 * @return 区域，非空。
	 * @since 1.0
	 */
	Locale getLocale();

	/**
	 * 日期环境
	 * 
	 * @return 日期环境，非空。
	 * @since 1.0
	 */
	DateContext getDateContext();

	/**
	 * 所属时区
	 * 
	 * @return 时区，非空。
	 * @since 1.0
	 */
	default TimeZone getTimeZone() {
		return getDateContext().getTimeZone();
	}

	/**
	 * 所属时区偏移
	 * 
	 * @return 时区偏移，非空。
	 * @since 1.0
	 */
	default ZoneOffset getZoneOffset() {
		return getDateContext().getZoneOffset();
	}

	/**
	 * 所属假日策略
	 * 
	 * @return 假日策略
	 * @since 1.0
	 */
	FestivalStrategy getFestivalStrategy();
}
